4D Server v12On Server Open Connectionデータベースメソッド |
||||||||||
|
4D Server v12
On Server Open Connectionデータベースメソッド
|
引数 | 説明 |
$1 | 4D Serverがユーザを識別するために内部的に使用するユーザID番号 |
$2 | 4D Serverが接続を識別するために内部的に使用する接続ID番号 |
$3 | 廃止: 常に0が渡されますが、宣言は必要 |
これらのID番号は、例えば4Dコマンドに渡す引数のように、情報ソースとして直接使用することはできません。しかしこれらのID番号はOn Server Open ConnectionデータベースメソッドとOn Server Close Connectionデータベースメソッドとの間で、4Dクライアントプロセスを一意に識別するために利用できます。4D Server セッションのどの時点でも、これらの値の組み合わせはユニークです。インタープロセス配列やテーブルにこの情報を格納することによって、2つのデータベースメソッド間で情報をやり取りできます。この節の最後に示された例では、2つのデータベースメソッドがこの情報を使用して、テーブルの同一レコードに接続の開始と終了の日付と時間を格納しています。
次の例はOn Server Open ConnectionデータベースメソッドとOn Server Close Connectionデータベースメソッドを使用して、データベースへの接続ログを管理する方法を示しています。[Server Log]テーブル (下図) は接続処理の記録を取るために使用されています:
このテーブルに格納される情報は、次のOn Server Open ConnectionデータベースメソッドとOn Server Close Connectionデータベースメソッドによって管理されます:
` On Server Open Connection データベースメソッド
C_LONGINT($0;$1;$2;$3)
` [Server Log] レコード作成
CREATE RECORD([Server Log])
[Server Log]Log ID:=Sequence number([Server Log])
` 接続日付と時間を保存
[Server Log]Log Date:=Current date
[Server Log]Log Time:=Current time
` 接続情報を保存
[Server Log]User ID:=$1
[Server Log]Connection ID:=$2
SAVE RECORD([Server Log])
` エラーなしを返すと接続が続行される
$0:=0 ` On Server Close Connection データベースメソッド
C_LONGINT($1;$2;$3)
` [Server Log] レコードを取得
QUERY([Server Log];[Server Log]User ID=$1;*)
QUERY([Server Log];&;[Server Log]Connection ID=$2)
` 終了日付と時間を保存
[Server Log]Exit Date:=Current date
[Server Log]Exit Time:=Current time
` プロセス情報を保存
[Server Log]Process ID:=Current process
PROCESS PROPERTIES([Server Log]Process ID;$vsProcName;$vlProcState;$vlProcTime)
[Server Log]Process Name:=$vsProcName
SAVE RECORD([Server Log])
下図は[Server Log]に登録されたレコードで、いくつかのリモート接続を示しています:
以下の例題は午前2時から4時の間の接続を拒否します。
` On Server Open Connection データベースメソッド
C_LONGINT($0;$1;$2;$3)
If((?02:00:00?<=Current time)&(Current time<?04:00:00?))
$0:=22000
Else
$0:=0
End if
プロダクト: 4D Server
テーマ: 4D Serverデータベースメソッド
On Server Close Connectionデータベースメソッド